iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 25
1
AI & Data

AI x 日常 x 30天系列 第 25

Epoch 25 - Triplet Loss

  • 分享至 

  • xImage
  •  

最近在看metric learning 相關的東西,
再次複習了一次Triplet Loss>

Triplet Loss 首次提出是在Google的人臉辨識論文FaceNet,
FaceNet: A Unified Embedding for Face Recognition and Clustering

它的概念十分簡單:

讓同類盡可能靠近,不同類盡可能遠離

它的基本單位是一組triplet(Anchor, Positive, Negative),
先從dataset選出一個Anchor,然後挑選一個同類的作為Positive,挑選一個不同類的作為Negative,

最終的優化目標是拉近(A,P)的距離,拉遠(A,P)的距離,寫成式子:
他們兩兩的距離還需要差一個margin。

T是所有可能的Triplet組合

但實際上我們很難使用所有的Triplet來訓練,這樣會收斂很慢,
因為Triplet 可分為三類:esay/semi-hard/hard
關係如下圖,

通常大部分的是easy triplet,對優化沒有太大的幫助,
而hard sample有時候會太困難,直接優化可能導致模型泛化能力變差。
FaceNet 中是隨機選取semi-hard triplets 進行訓練的。

Triplets採樣有很多種變化,也可以挑semi-hard/hard一起優化,
或是早期優化easy triplet,晚期優化hard triplet。

FaceNet是對經過CNN抽取的emedding特徵進行triplet loss計算。


不過實務上很多人說triplet實在很難train,要花時間調參數才會收斂,
所以目前也比較少人直接使用triplet loss,
通常會搭配softmax類型的loss一起train。


上一篇
Epoch 24 - 超高速人體分割(human segmentation)
下一篇
Epoch 26 - Metric Learning x Cross-Batch Memory
系列文
AI x 日常 x 30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言